package top.jiangqiang.crawler.core.recorder;

import org.jetbrains.annotations.Nullable;
import top.jiangqiang.crawler.core.entities.Crawler;

import java.util.List;

public interface RecorderService {

    /**
     * 阻塞指定时长，直到获取到一个任务，超过指定时长没有获取到则返回null
     *
     * @param timeout 时长，单位毫秒，-1则不限时长
     * @return
     */
    @Nullable
    Crawler poll(long timeout);

    /**
     * 程序结束前执行，如果是内存记录器，可以在此方法中将内存中的数据持久化到硬盘
     */
    default void saveBeforeEnd() {

    }

    /**
     * 批量添加任务，需要自定义实现去重逻辑
     *
     * @param crawlers
     */
    void push(List<Crawler> crawlers);
}
